package com.chalk.model;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 会员表(Member)实体类
 *
 * @author maxiaoqiang
 * @since 2019-03-22 17:35:27
 */
@ApiModel(value = "Member", description = "会员表")
@Data
@TableName("t_member")
public class Member {

    /**
     * 会员id
     */
    @ApiModelProperty(name = "memberId", value = "会员id")
    @TableId(type = IdType.ID_WORKER_STR)
    private String memberId;


    /**
     * 会员名
     */
    @ApiModelProperty(name = "memberName", value = "会员名")
    @TableField("member_name")
    private String memberName;

    /**
     * 会员昵称
     */
    @ApiModelProperty(name = "nickName", value = "会员昵称")
    @TableField("nick_name")
    private String nickName;

    /**
     * 密码
     */
  //  @JsonIgnore
    @ApiModelProperty(name = "password", value = "密码")
    @TableField("password")
    private String password;

    /**
     * 邮箱
     */
    @ApiModelProperty(name = "email", value = "邮箱")
    @TableField("email")
    private String email;

    /**
     * 手机号码
     */
    @ApiModelProperty(name = "mobilePhone", value = "手机号码")
    @TableField("mobile_phone")
    private String mobilePhone;

    /**
     * 会员头像url
     */
    @ApiModelProperty(name = "picUrl", value = "会员头像url")
    @TableField("pic_url")
    private String picUrl;

    /**
     * 性别（0，未录入、1，女、2，男，默认0）
     */
    @ApiModelProperty(name = "gender", value = "性别（0，未录入、1，女、2，男，默认0）")
    @TableField("gender")
    private Integer gender;

    /**
     * 生日
     */
    @ApiModelProperty(name = "birthday", value = "生日")
    @TableField("birthday")
    private String birthday;

    /**
     * 真实姓名
     */
    @ApiModelProperty(name = "realName", value = "真实姓名")
    @TableField("real_name")
    private String realName;

    /**
     * 身份证件类型（0、身份证，1、护照，默认0）
     */
    @ApiModelProperty(name = "idCardType", value = "身份证件类型（0、身份证，1、护照，默认0）")
    @TableField("id_card_type")
    private Integer idCardType;

    /**
     * 身份证件号码
     */
    @ApiModelProperty(name = "idCardNo", value = "身份证件号码")
    @TableField("id_card_no")
    private String idCardNo;

    /**
     * 身份证件照片1（一般实名认证时使用）
     */
    @ApiModelProperty(name = "idCardPic1", value = "身份证件照片1（一般实名认证时使用）")
    @TableField("id_card_pic1")
    private String idCardPic1;

    /**
     * 身份证件照片2（一般实名认证时使用）
     */
    @ApiModelProperty(name = "idCardPic2", value = "身份证件照片2（一般实名认证时使用）")
    @TableField("id_card_pic2")
    private String idCardPic2;

    /**
     * 身份证件照片3（一般实名认证时使用）
     */
    @ApiModelProperty(name = "idCardPic3", value = "身份证件照片3（一般实名认证时使用）")
    @TableField("id_card_pic3")
    private String idCardPic3;

    /**
     * 是否已经实名认证（1、已实名认证，0、未实名认证，2、实名认证审核中，默认0）
     */
    @ApiModelProperty(name = "isIdValid", value = "是否已经实名认证（1、已实名认证，0、未实名认证，2、实名认证审核中，默认0）")
    @TableField("is_id_valid")
    private String isIdValid;

    /**
     * 是否已经手机号认证（1、已认证手机号，0、未认证手机号，默认0）
     */
    @ApiModelProperty(name = "isMobileValid", value = "是否已经手机号认证（1、已认证手机号，0、未认证手机号，默认0）")
    @TableField("is_mobile_valid")
    private Integer isMobileValid;

    /**
     * 是否已经邮箱认证（1、已认证邮箱，0、未认证邮箱，默认0）
     */
    @ApiModelProperty(name = "isEmailValid", value = "是否已经邮箱认证（1、已认证邮箱，0、未认证邮箱，默认0）")
    @TableField("is_email_valid")
    private Integer isEmailValid;

    /**
     * 会员级别id（对应t_member_level表主键）
     */
    @ApiModelProperty(name = "memberLevelId", value = "会员级别id（对应t_member_level表主键）")
    @TableField("member_level_id")
    private String memberLevelId;

    /**
     * 会员积分（随会员行为，如购物等可一直增长，一般用于决定会员级别，默认0）
     */
    @ApiModelProperty(name = "memberPoint", value = "会员积分（随会员行为，如购物等可一直增长，一般用于决定会员级别，默认0）")
    @TableField("member_point")
    private Integer memberPoint;

    /**
     * 推荐人类型（0，自己注册无推荐人、1，平台人员、2，商家人员、3，会员，默认0）
     */
    @ApiModelProperty(name = "referenceType", value = "推荐人类型（0，自己注册无推荐人、1，平台人员、2，商家人员、3，会员，默认0）")
    @TableField("reference_type")
    private Integer referenceType;

    /**
     * 推荐人id（根据推荐人类型不同，对应不同的表记录）
     */
    @ApiModelProperty(name = "referenceId", value = "推荐人id（根据推荐人类型不同，对应不同的表记录）")
    @TableField("reference_id")
    private String referenceId;

    /**
     * 是否在黑名单（0，不在黑名单，1、在黑名单，默认0）
     */
    @ApiModelProperty(name = "isBlacklist", value = "是否在黑名单（0，不在黑名单，1、在黑名单，默认0）")
    @TableField("is_blacklist")
    private Integer isBlacklist;

    /**
     * 最近登陆时间
     */
    @ApiModelProperty(name = "lastLoginTime", value = "最近登陆时间")
    @TableField("last_login_time")
    private Date lastLoginTime;

    /**
     * 登录失败时间
     */
    @ApiModelProperty(name = "lastLoginFailTime", value = "登录失败时间")
    @TableField("last_login_fail_time")
    private Date lastLoginFailTime;

    /**
     * 登录失败次数（3次）
     */
    @ApiModelProperty(name = "lastLoginFailCount", value = "登录失败次数（3次）")
    @TableField("last_login_fail_count")
    private Integer lastLoginFailCount;

    /**
     * 登录锁定状态(1：表示锁定、0：表示解锁)
     */
    @ApiModelProperty(name = "loginLockStatus", value = "登录锁定状态(1：表示锁定、0：表示解锁)")
    @TableField("login_lock_status")
    private Integer loginLockStatus;

    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createTime", value = "创建时间")
    @TableField("create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(name = "updateTime", value = "更新时间")
    @TableField("update_time")
    private Date updateTime;

    /**
     * 操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）
     */
    @ApiModelProperty(name = "operatorType", value = "操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）")
    @TableField("operator_type")
    private Integer operatorType;

    /**
     * 操作人id（根据操作人类型会对应不同的表记录）
     */
    @ApiModelProperty(name = "operatorId", value = "操作人id（根据操作人类型会对应不同的表记录）")
    @TableField("operator_id")
    private String operatorId;

    /**
     * 分销商id
     */
    @ApiModelProperty(name = "distributorId", value = "分销商id")
    @TableField("distributor_id")
    private String distributorId;

    /**
     * 实名认证审核状态，0：未审核；1、已审核，2、审核不通过，默认0
     */
    @ApiModelProperty(name = "idCardCensorStatus", value = "实名认证审核状态，0：未审核；1、已审核，2、审核不通过，默认0")
    @TableField("id_card_censor_status")
    private Integer idCardCensorStatus;

    /**
     * 实名认证审核时间
     */
    @ApiModelProperty(name = "idCardCensorTime", value = "实名认证审核时间")
    @TableField("id_card_censor_time")
    private Date idCardCensorTime;

    /**
     * 实名认证审核备注
     */
    @ApiModelProperty(name = "idCardCensorMemo", value = "实名认证审核备注")
    @TableField("id_card_censor_memo")
    private String idCardCensorMemo;

    /**
     * 审核操作人id
     */
    @ApiModelProperty(name = "idCardCensorOperatorId", value = "审核操作人id")
    @TableField("id_card_censor_operator_id")
    private String idCardCensorOperatorId;

    /**
     * 审核操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）
     */
    @ApiModelProperty(name = "idCardCensorOperatorType", value = "审核操作人类型（0、系统自动操作，1、平台人员操作，2、商家人员操作，3、会员操作）")
    @TableField("id_card_censor_operator_type")
    private Integer idCardCensorOperatorType;

    /**
     * 国家代码
     */
    @ApiModelProperty(name = "stateNo", value = "国家代码")
    @TableField("state_no")
    private String stateNo;

    /**
     * token:根据规则生成的加密串，用于钱包登录
     */
    @ApiModelProperty(name = "token", value = "token:根据规则生成的加密串，用于钱包登录")
    @TableField("token")
    private String token;

    /**
     * token的生成时间
     */
    @ApiModelProperty(name = "tokenTime", value = "token的生成时间")
    @TableField("token_time")
    private Date tokenTime;

    /**
     * 是否已经验证token（0：未验证，1：已验证）
     */
    @ApiModelProperty(name = "isVerifyToken", value = "是否已经验证token（0：未验证，1：已验证）")
    @TableField("is_verify_token")
    private Integer isVerifyToken;

    /**
     * openId
     */

    @ApiModelProperty(name = "openId", value = "openId")
    @TableField("open_id")
    private String openId;

    /**
     * 用户类型（0无，1个人，2企业，3门店）
     */
    @ApiModelProperty(name = "memberType", value = "用户类型（0无，1个人，2企业,3门店 4门店员工 ）")
    @TableField("member_type")
    private Integer memberType;

    /**
     * 企业id
     */
    @ApiModelProperty(name = "enterpriseId", value = "企业id")
    @TableField("enterprise_id")
    private String enterpriseId;

    /**
     * 余额
     */
    @JsonIgnore
    @ApiModelProperty(name = "blanace", value = "余额")
    @TableField("blanace")
    private Object blanace;

    /**
     * 级别id
     */
    @ApiModelProperty(name = "sharelevelId", value = "级别id")
    @TableField("sharelevel_id")
    private String sharelevelId;

    /**
     * 是否已删除（逻辑删除，1、已删除，0、未删除，默认0）
     */
    @JsonIgnore
    @ApiModelProperty(name = "isDeleted", value = "是否已删除（逻辑删除，1、已删除，0、未删除，默认0）")
    @TableField("is_deleted")
    private Integer isDeleted;
    /**
     * 积分
     */
    @JsonIgnore
    @ApiModelProperty(name = "integral", value = "积分")
    @TableField("integral")
    private Integer integral;

//    /**
//     * 可提现余额
//     */
//    @ApiModelProperty(name = "txMoney", value = "可提现余额")
//    @TableField("tx_money")
//    private BigDecimal txMoney;

    /**
     * 操作积分
     */
    @ApiModelProperty(name = "tempIntegral", value = "操作积分")
    @TableField(exist = false)
    private Integer tempIntegral;

    /**
     * 操作积分类型（0：加 1：减）
     */
    @ApiModelProperty(name = "type", value = "操作积分类型（0：加 1：减）")
    @TableField(exist = false)
    private String type;

    /**
     * 是否为商家
     */
    @ApiModelProperty(name = "seller", value = "是否为商家 true:是 false:否")
    @TableField(exist = false)
    private boolean seller = false;

    /**
     * 客户订单数量
     */
    @ApiModelProperty(name = "orderNum", value = "客户订单数量")
    @TableField(exist = false)
    private  Long orderNum;
    /**
     * 客户订单总金额
     */
    @ApiModelProperty(name = "orderTotal", value = "客户订单总金额")
    @TableField(exist = false)
    private  Double orderTotal;


    /**
     * 门店ID
     */
    @ApiModelProperty(name = "newShopId", value = "绑定门店ID")
    private String newShopId;


    /**
     * 车牌
     */
    @ApiModelProperty(name = "carPlate", value = "车牌")
    @TableField(exist = false)
    private String carPlate;

    /**
     * 车型
     */
    @ApiModelProperty(name = "carType", value = "车型")
    @TableField(exist = false)
    private String carType;



}